// OGoMojo
// Whitemice.MOGI.ITask
// License: LGPL
// Copyright: Whitemice Consulting, 2006
// Author(s): Adam Tauno Williams (awilliam@whitemice.org)
using System;

namespace Whitemice.MOGI {
	/// \brief An enumeration of possible task priorities
	public enum ETaskPriority : uint {
		VeryHigh = 1,
		High = 2,
		Average = 3,
		Low = 4,
		VeryLow = 5
	}
		
	/// \brief An enumeration of possible task statuses
	public enum ETaskStatus : uint {
		Created = 1,
		Accepted = 2,
		Processing = 3,
		Done = 4,
		Archived = 5,
		Rejected = 6,
		Commented = 7,
		Divided = 8,
		Reactivated = 9
	}
	
	public enum ETaskSensitivity : uint
	{
		Public = 0,
		Personal = 1,
		Private = 2,
		Confidential = 3,
		Undefined = 4
	}

	/// \brief The interface for a Task document
	public interface ITask : IDocument {
		/// \brief Task end date
		DateTime EndDate { get; set; }
		/// \brief Task start date
		DateTime StartDate { get; set; }
		DateTime CompletionDate { get; set; }
		/// \brief Document id of task executor
		string Executor { get; set; }
		/// \brief Document id of task creator
		string Creator { get; set; }
		/// \brief Task status
		ETaskStatus Status { get; }
		/// \brief Task Keywords
		string Keywords { get; set; }
		/// \brief Task description or name
		string Description { get; set; }
		/// \brief Task priorit
		ETaskPriority Priority { get; set; }
		/// \brief Task percentage complete
		int PercentComplete { get; set; }
		string Info { get; set; }
		string Companies { get; set; }
		string Contacts { get; set; }
		int ActualWork { get; set; }
		int TotalWork { get; set; }
		int Kilometers { get; set; }
		int Miles { get; set; }
		ETaskSensitivity Sensitivity { get; set; }
		string Category { get; set; }
		string Number { get; }
	}
}